
<%@page import="tickets.TipoTicket"%>
<%@page import="tickets.StatusTicket"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="tickets.Privilege"%>
<%@page import="sun.security.x509.OIDMap"%>
<%@page import="tickets.Controlador"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
        <%
            Object ouser = session.getAttribute("user1");
            Object opass = session.getAttribute("password");
            String user, pass;

            if (ouser != null) {
                user = (String) ouser;
                pass = (String) opass;
            } else {
                user = request.getParameter("user");
                pass = request.getParameter("pass");
                session.setAttribute("user1", user);
                session.setAttribute("password", pass);
            }
//            String user = request.getParameter("user");
//            String pass = request.getParameter("pass");
            Controlador c = new Controlador();
            boolean valid = c.login(user, pass);
        %>


    </head>
    <body>

        <% if (valid) {
                out.print("<h1>Hola " + c.user.getNombre() + "</h1>");

                if (c.user.getPrivilege() == Privilege.supervisor) {
                    // Se despliegan controles de supervisor
                    // Un supervisor debe poder hacer:
                    //      - Cancelaciones de ticket por usuario
                    //      - Reportes de tickets por status
                    //      - Reportes de tickets por fecha

                    out.print("Controles de administración");
                    out.print("<form method=\"GET\" action=\"response.jsp\">");
                    out.print("Introduzca el ID del ticket a cancelar:");
                    out.print("<input type=\"text\" name=\"idTicketCanc\">");
                    out.print("<input type=\"submit\" name=\"actionEmp\" value=\"Cancelar ticket\">");
                    out.print("</br>");
                    out.print("Reporte por estatus");
                    out.print("<select name=\"status\">");
                    for (int idx = 0; idx < StatusTicket.values().length; idx++) {
                        out.print("<option value=" + idx + ">" + StatusTicket.values()[idx] + "</option>");
                    }
                    out.print("</select>");
                    out.print("<input type=\"submit\" name=\"actionEmp\" value=\"Estatus\">");
                    out.print("</br>");
                    out.print("</form>");
                    String command = request.getParameter("actionEmp");
                    ResultSet rs;
                    if (command != null) {
                        if (command.equals("Cancelar ticket")) {
                            int ticketACancelar = Integer.parseInt(request.getParameter("idTicketCanc"));
                            c.conexion.ejecutaSP("CANCELAR_TICKET(" + ticketACancelar + ")");
                            rs = c.conexion.ejecutaQuery("SELECT * FROM CLIENTE;");
                        }
                        if (command.equals("Estatus")) {
                            int stat = Integer.parseInt(request.getParameter("status"));
                            rs = c.conexion.ejecutaQuery("SELECT * FROM TICKET WHERE ESTADO_TICKET_ID=" + stat + ";");
                        } else {
                            rs = c.conexion.ejecutaQuery("SELECT * FROM TICKET;");
                        }
                    } else {
                        rs = c.conexion.ejecutaQuery("SELECT * FROM TICKET;");

                    }

                    out.print("<table border=\"1\">");


                    out.print("<tr>");
                    out.print("<td>");
                    out.print("Ticket ID");
                    out.print("</td>");
                    out.print("<td>");
                    out.print("Fecha");
                    out.print("</td>");
                    out.print("<td>");
                    out.print("Tipo Ticket");
                    out.print("</td>");
                    out.print("<td>");
                    out.print("Estado ticket");
                    out.print("</td>");
                    out.print("<td>");
                    out.print("Cliente ID");
                    out.print("</td>");
                    out.print("</tr>");
                    while (rs.next()) {

                        out.print("<tr>");
                        for (int i = 1; i < 6; i++) {
                            out.print("<td>");
                            out.print(rs.getString(i));
                            out.print("</td>");
                        }
                        out.print("</tr>");
                    }


                    out.print("</table>");
                } else if (c.user.getPrivilege() == Privilege.empleado) {
                    // Se despliegan controles de empleado
                    // Un empleado debe poder hacer:
                    //      - Crear un nuevo ticket
                    //      - Ver los comentarios para cada ticket (por llamada de usuario)
                    //      - Consultar por usuario
                    //      - Cerrar ticket

                    out.println("<form method=\"GET\" action=\"response.jsp\">");
                    out.println("Introduzca el ID del cliente que quiere ver sus tickets: <input type=\"text\" name=\"IDCliente\">");
                    out.println("<input type=\"submit\" name=\"actionEmp\" value=\"Consulta tickets cliente\">");
                    out.println("</br>");
                    out.println("Introduzca el ID del cliente para crearle un ticket: <input type=\"text\" name=\"IDCliente\">");
                    out.println("<input type=\"submit\" name=\"actionEmp\" value=\"Crear ticket\">");
                    out.println("</br>");
                    out.println("</form>");

                    String string = request.getParameter("actionEmp");
                    out.print("Tabla de usuarios");
                    out.print("<table border=\"1\">");

                    ResultSet rs = c.conexion.ejecutaQuery("SELECT * FROM CLIENTE;");
                    out.print("<tr>");
                    out.print("<td>");
                    out.print("Cliente ID");
                    out.print("</td>");
                    out.print("<td>");
                    out.print("Nombre");
                    out.print("</td>");
                    out.print("<td>");
                    out.print("Apellido paterno");
                    out.print("</td>");
                    out.print("<td>");
                    out.print("Apellido Materno");
                    out.print("</td>");
                    out.print("<td>");
                    out.print("Tipo de Cuenta");
                    out.print("</td>");
                    out.print("</tr>");
                    while (rs.next()) {

                        out.print("<tr>");
                        for (int i = 1; i < 6; i++) {
                            out.print("<td>");
                            out.print(rs.getString(i));
                            out.print("</td>");
                        }
                        out.print("</tr>");
                    }


                    out.print("</table>");

                    if (string != null) {
                        if (string.equals("Consulta tickets cliente")) {
                            out.println("</br>");
                            out.println("</br>");

                            out.println("<form method=\"GET\" action=\"response.jsp\">");
                            out.println("Introduzca el ID del ticket a ver: <input type=\"text\" name=\"IDTicket\">");
                            out.println("<input type=\"submit\" name=\"actionEmp\" value=\"Ver ticket\">");
                            out.println("Introduzca el ID del ticket a cerrar: <input type=\"text\" name=\"IDTicket\">");
                            out.println("<input type=\"submit\" name=\"actionEmp\" value=\"Cerrar ticket\">");
                            out.println("</br>");
                            out.println("</form>");

                            out.println("</br>");
                            out.println("</br>");
                            out.print("Tabla de tickets del usuario");
                            out.print("<table border=\"1\">");
                            String idCliente = request.getParameter("IDCliente");
                            session.setAttribute("idCliente", idCliente);

                            rs = c.conexion.ejecutaSP("GET_TICKETS_CLIENTE (" + idCliente + ")");
                            out.print("<tr>");
                            out.print("<td>");
                            out.print("Ticket ID");
                            out.print("</td>");
                            out.print("<td>");
                            out.print("Fecha");
                            out.print("</td>");
                            out.print("<td>");
                            out.print("Tipo Ticket");
                            out.print("</td>");
                            out.print("<td>");
                            out.print("Estado Ticket");
                            out.print("</td>");
                            out.print("</tr>");
                            while (rs.next()) {

                                out.print("<tr>");
                                for (int i = 1; i < 5; i++) {
                                    out.print("<td>");
                                    out.print(rs.getString(i));
                                    out.print("</td>");
                                }
                                out.print("</tr>");
                            }
                        } else if (string.equals("Crear ticket")) {
                            String idCliente = request.getParameter("IDCliente");
                            session.setAttribute("idCliente", idCliente);
                            out.println("</br>");
                            out.println("</br>");
                            out.println("<form method=\"GET\" action=\"response.jsp\">");
                            out.println("Introduzca la fecha de creacion (DD/MM/AAAA): <input type=\"text\" name=\"Fecha\">");
                            out.println("</br>");
                            out.print("Estatus");
                            out.print("<select name=\"status\">");
                            for (int idx = 0; idx < StatusTicket.values().length; idx++) {
                                out.print("<option value=" + idx + ">" + StatusTicket.values()[idx] + "</option>");
                            }
                            out.print("</select>");
                            out.println("</br>");
                            out.print("Tipo");
                            out.print("<select name=\"tipo\">");
                            for (int idx = 0; idx < TipoTicket.values().length; idx++) {
                                out.print("<option value=" + idx + ">" + TipoTicket.values()[idx] + "</option>");
                            }
                            out.print("</select>");
                            out.println("</br>");
                            out.println("<input type=\"submit\" name=\"actionEmp\" value=\"Crear\">");
                            out.println("</br>");
                            out.println("</form>");
                        } else if (string.equals("Crear")) {
                            Object oIdCliente = session.getAttribute("idCliente");
                            String idCliente;
                            if (oIdCliente != null) {
                                idCliente = (String) oIdCliente;
                            } else {
                                idCliente = "";
                            }
                            String fecha, tipo, estado, idUsuario;
                            fecha=request.getParameter("Fecha");
                            tipo=request.getParameter("tipo");
                            estado=request.getParameter("status");
                            idUsuario=c.user.getId()+"";
                            String sp="INSERT_TICKET("+idUsuario+","+ fecha+","+ tipo+","+ estado+","+ idCliente+")";
                            System.out.println(sp);
                            c.conexion.ejecutaSP(sp);
                        } else if (string.equals("Ver ticket")) {
                            String idTicket =request.getParameter("IDTicket");
                            
                        } else if (string.equals("Cerrar ticket")) {
                            String idTicket = request.getParameter("IDTicket");
                            c.conexion.ejecutaSP("CERRAR_TICKET(" + idTicket + ")");
                            out.println("</br>");
                            out.println("</br>");

                            out.println("<form method=\"GET\" action=\"response.jsp\">");
                            out.println("Introduzca el ID del ticket a cerrar: <input type=\"text\" name=\"IDCliente\">");
                            out.println("<input type=\"submit\" name=\"actionEmp\" value=\"Cerrar ticket\">");
                            out.println("</br>");
                            out.println("</form>");

                            out.println("</br>");
                            out.println("</br>");
                            out.print("Tabla de tickets del usuario");
                            out.print("<table border=\"1\">");

                            Object oIdCliente = session.getAttribute("idCliente");
                            String idCliente;
                            if (oIdCliente != null) {
                                idCliente = (String) oIdCliente;
                            } else {
                                idCliente = "";
                            }
                            rs = c.conexion.ejecutaSP("GET_TICKETS_CLIENTE (" + idCliente + ")");
                            out.print("<tr>");
                            out.print("<td>");
                            out.print("Ticket ID");
                            out.print("</td>");
                            out.print("<td>");
                            out.print("Fecha");
                            out.print("</td>");
                            out.print("<td>");
                            out.print("Tipo Ticket");
                            out.print("</td>");
                            out.print("<td>");
                            out.print("Estado Ticket");
                            out.print("</td>");
                            out.print("</tr>");
                            while (rs.next()) {

                                out.print("<tr>");
                                for (int i = 1; i < 5; i++) {
                                    out.print("<td>");
                                    out.print(rs.getString(i));
                                    out.print("</td>");
                                }
                                out.print("</tr>");
                            }
                        }
                    }
                } else {
                    System.out.println("Lo siento, no se cómo llegaste aquí");
                }

//                
//                
//                out.print("</br>");
//                out.print("</br>");
//                out.print("</br>");
//                out.print("<h2>Leyenda</h2>");
//                out.print("<h3>Tipo Ticket</h3>");
//                out.print("0: Tarjeta perdida</br>");
//                out.print("1: Tarjeta rechazada</br>");
//                out.print("2: Tarjeta robada</br>");
//                out.print("3: Incremento credito</br>");
//                out.print("4: Solicitud tarjeta</br>");
//                out.print("5: Otros</br>");
//                out.print("<h3>Estado ticket</h3>");
//                out.print("0: Abierto</br>");
//                out.print("1: Cerrado</br>");
//                out.print("2: Cancelado</br>");
//                out.print("<h3>Tipo de cuenta</h3>");
//                out.print("0: Debito</br>");
//                out.print("1: Credito</br>");

            } else {
                out.print("<h1>Denegado " + user + " </h1>");
            }
        %>

    </body>
</html>
